package com.blog.cmrpersonalblog.dto.tag.respnose;

import lombok.Data;
import java.time.LocalDateTime;
import java.util.List;

/**
 * 标签管理响应
 */
@Data
public class TagManagementResponse {

    /**
     * 标签ID
     */
    private Long id;

    /**
     * 标签名称
     */
    private String name;

    /**
     * 标签颜色
     */
    private String color;

    /**
     * 使用次数
     */
    private Integer useCount;

    /**
     * 状态 0-禁用 1-启用
     */
    private Integer status;

    /**
     * 状态文本
     */
    private String statusText;

    /**
     * 使用频率等级 0-未使用 1-低频 2-中频 3-高频
     */
    private Integer usageLevel;

    /**
     * 使用频率描述
     */
    private String usageLevelText;

    /**
     * 关联的文章数量
     */
    private Long articleCount;

    /**
     * 已发布文章数量
     */
    private Long publishedArticleCount;

    /**
     * 草稿文章数量
     */
    private Long draftArticleCount;

    /**
     * 最近使用时间
     */
    private LocalDateTime lastUsedTime;

    /**
     * 最近使用的文章标题列表（最多5个）
     */
    private List<String> recentArticleTitles;

    /**
     * 创建时间
     */
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    private LocalDateTime updateTime;

    /**
     * 获取状态文本描述
     */
    public String getStatusText() {
        if (status == null) {
            return "未知";
        }
        switch (status) {
            case 0:
                return "禁用";
            case 1:
                return "启用";
            default:
                return "未知";
        }
    }

    /**
     * 获取使用频率描述
     */
    public String getUsageLevelText() {
        if (usageLevel == null) {
            return "未知";
        }
        switch (usageLevel) {
            case 0:
                return "未使用";
            case 1:
                return "低频";
            case 2:
                return "中频";
            case 3:
                return "高频";
            default:
                return "未知";
        }
    }

    /**
     * 是否启用
     */
    public boolean isEnabled() {
        return status != null && status == 1;
    }

    /**
     * 是否禁用
     */
    public boolean isDisabled() {
        return status != null && status == 0;
    }

    /**
     * 是否被使用
     */
    public boolean isUsed() {
        return useCount != null && useCount > 0;
    }

    /**
     * 是否有关联文章
     */
    public boolean hasArticles() {
        return articleCount != null && articleCount > 0;
    }

    /**
     * 获取使用率（已发布文章占总文章的比例）
     */
    public Double getUsageRate() {
        if (articleCount == null || articleCount == 0) {
            return 0.0;
        }
        if (publishedArticleCount == null) {
            return 0.0;
        }
        return (double) publishedArticleCount / articleCount * 100;
    }

    /**
     * 是否为热门标签（使用次数大于等于10）
     */
    public boolean isPopular() {
        return useCount != null && useCount >= 10;
    }

    /**
     * 是否为新标签（创建时间在7天内）
     */
    public boolean isNew() {
        if (createTime == null) {
            return false;
        }
        return createTime.isAfter(LocalDateTime.now().minusDays(7));
    }

    /**
     * 是否为活跃标签（最近30天内有使用）
     */
    public boolean isActive() {
        if (lastUsedTime == null) {
            return false;
        }
        return lastUsedTime.isAfter(LocalDateTime.now().minusDays(30));
    }
}
